A graphics processing unit (GPU) may be a specialized electronic circuit designed to perform graphic acceleration, for example by providing for rapid manipulations and memory alterations, in order to accelerate the creation of images in a frame buffer intended for output to a display. GPUs may be used in embedded systems, mobile phones, personal computers, workstations, game consoles, or the like. Due to their design, modern GPUs are more efficient at manipulating computer graphics and image processing than general-purpose Central Processing Units (CPUs). A GPU may be provided on a video card. Alternatively, a GPU can be embedded on the motherboard or in further embodiments on the CPU die.
GPUs are highly required in any two or three dimensional (2D/3D) applications, such as Computer Added Design (CAD) applications or gaming environments, in which the graphics quality and speed may be a highly important, or even the most important aspect of the game, or other applications.
In some environments, including cloud computing but also home computers or others, a single GPU may be used for processing frames for a multiplicity of games or other processes submitting tasks. Thus, it may be required to schedule the tasks. The tasks should be scheduled in accordance with the games or processes requirements, such that each game is provided enough GPU time for proper execution, in accordance for example with a minimal required frame rate. If the GPU cannot allocate enough processing time for each of the games or processes being executed at a particular time, then the tasks should be executed in accordance with appropriate prioritization and time division, otherwise, the process may suffer from performance hits such as frames per second (FPS) drops or stuttering.
One technical problem dealt with by the disclosed subject matter is the need to process multiple games or other graphics-rich processes (hereinafter, collectively referred to as “games”) on a single GPU. Such need may arise when executing a multiplicity of games on a local computing platform, a remote computing platform, a computing platform implemented on a cloud computing environment, or the like.
Another technical problem relates to the processing time requirements. Each game preferably receives sufficient processing time such that it can operate with the required rate, such as at least 30 frames per second (FPS) in NTSC. However, the GPU cannot allocate more than 100% processing time when the system is under high load.
Yet another technical problem relates to the need to ensure that if one or more games loading the GPU beyond their allotted processing time, then other games are not penalized, and their frame rate is not damaged, but rather the offending game is penalized and its frame rate drops. In severe cases, the frame rate of other games may also be harmed, but to a lesser degree than the offending game's frame rate.